package com.sysmanage.permissions.service;

import java.util.List;
import java.util.Map;

import com.sysmanage.common.tools.page.Pagination;
import com.sysmanage.framework.service.ServiceInterface;
import com.sysmanage.permissions.model.CloneResources;
import com.sysmanage.permissions.model.CloneUsers;
import com.sysmanage.permissions.model.Resources;
import com.sysmanage.permissions.model.Systems;
import com.sysmanage.permissions.model.Users;

/** 
  * @ClassName: IUserService 
  * @Description: 用户业务层接口
  * @author XXXX@163.com
  * @date 2011-9-26 上午9:48:58 
  *  
  */
public interface IUserService extends ServiceInterface<Users> {
	/**
	 * 获取部门用户树
	 * @param 部门ID
	 * @return
	 */
	
	public List<Map<String,Object>> getDeptUserTree(String deptId);
	
	public boolean alterToGroup(Users user,String groupId);
	/** 
	  * @Title: getPageList 
	  * @Description: 获取具体某页的用户信息
	  * @param @param sys 一条具体用户Users对象的信息
	  * @param @param page 当前页
	  * @param @param rows 一页显示的记录
	  * @param @return
	  * @return Pagination
	  * @throws 
	  */
	public Pagination getPageList(Users sys,int page,int rows,String sort,String order);
	/** 
	  * @Title: getAll 
	  * @Description: 获取所有的用户信息
	  * @param @return
	  * @return List<Users>
	  * @throws 
	  */
	public List<Users> getAll();
	/** 
	  * @Title: getAllValidUser 
	  * @Description: 获取所有有用的用户信息
	  * @param @return
	  * @return List<Users>
	  * @throws 
	  */
	public List<Users> getAllValidUser();	
	/** 
	  * @Title: getGroupAll 
	  * @Description: 获取某组下的所有用户信息
	  * @param @param groupId 组id
	  * @param @return
	  * @return List<Users>
	  * @throws 
	  */
	public List<Users> getGroupAll(Integer groupId);
	/** 
	  * @Title: saveToGroup 
	  * @Description: 往组里面添加用户
	  * @param @param groupId  组id
	  * @param @param user 具体用户对象
	  * @param @return
	  * @return Boolean
	  * @throws 
	  */
	/** 
	  * @Title: getGroupAllPageList 
	  * @Description: 获取具体某页的用户信息
	  * @param @param groupId 组ID
	  * @param @param page 当前页
	  * @param @param rows 一页显示的记录
	  * @param @return
	  * @return Pagination
	  * @throws 
	  */
	public Pagination getGroupAllPageList(Integer groupId, int page, int rows,String sort,String order);
	/** 
	  * @Title: getGroupOtherPageList 
	  * @Description: 具体某页显示多少条记录
	  * @param @param groupId 组id
	  * @param @param user 一条具体的用户信息
	  * @param @param page 当前页
	  * @param @param rows 一页显示多少条记录
	  * @param @return
	  * @return Pagination
	  * @throws 
	  */
	public Pagination getGroupOtherPageList(Integer groupId,Users user, int page, int rows,String sort,String order);	
	public Boolean saveToGroup(String groupId,Users user);
	public Users login(String userName,String password);
	public List<Users> findByLoginIds(String ids);
	public List<Users> findByName(String name);
	public String returnRoleName(String userId);
	/**
	 * @Title: convert 
	 * @Description: 将Users类型转换成CloneUsers
	 * @param users
	 * @param showPS
	 * @return
	 */
	public List<CloneUsers> convert(List<Users> users,boolean showPS);
	
	/** 
	  * @Title: convert 
	  * @Description: 将CloneUsers类型转换成Users
	  * @param @param users
	  * @param @return
	  * @param @throws Exception
	  * @return Resources
	  * @throws 
	  */
	public Users convert(CloneUsers user);
	
	public boolean deleteUserById(Integer id);
	public boolean saveUser(Users user);
}
